Ga naar hoofdinhoud Ga naar aanvullende inhoud

For each..next

De besturingsopdracht for each..next is een herhalingsconstructie voor gebruik in scripts waarmee een of meer opdrachten worden uitgevoerd voor elke waarde in een door komma's gescheiden lijst. De opdrachten in de lus tussen for en next worden uitgevoerd voor elke waarde van de lijst.

Syntaxis:  

Door een speciale syntaxis kunnen lijsten worden gegenereerd met namen van bestanden en mappen in de huidige map.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argumenten:  

Voor alle argumenten
Argument Beschrijving
var De naam van een scriptvariabele die een nieuwe waarde uit de lijst ophaalt, telkens wanneer de lus wordt uitgevoerd. Als var wordt opgegeven na next moet de variabele dezelfde naam hebben als de variabele die wordt gevonden na de overeenkomende for each.

De waarde van de var kan worden gewijzigd door opdrachten binnen de lus. Dit is echter met het oog op de gebruikelijke manier van programmeren niet aan te raden.

Als een clausule exit for binnen de lus wordt aangetroffen, gaat de uitvoering van het script over op de eerste opdracht na de clausule next die het einde van de lus aangeeft. De clausule exit for kan voorwaardelijk worden gemaakt met het optionele suffix when of unless.

InformatieOmdat de opdracht for each..next een besturingsopdracht is en dus wordt afgesloten door een puntkomma of het einde van een regel, mag geen van de drie mogelijke clausules ervan (for each, exit for en next) de regelgrens overschrijden.

Syntaxis:  

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

 

Argumenten voor list
Argument Beschrijving
constant Elk getal of elke tekenreeks. Een tekenreeks die rechtstreeks in het script wordt opgenomen moet tussen enkele aanhalingstekens worden geplaatst. Een tekenreeks zonder enkele aanhalingstekens wordt geïnterpreteerd als een variabele en vervolgens wordt de waarde van de variabele gebruikt. Getallen hoeven niet tussen enkele aanhalingstekens te worden geplaatst.
expression Een willekeurige uitdrukking.
mask

Een masker voor de naam van een bestand of map die geldige tekens voor bestandsnamen plus de standaardjokertekens, * en ?, kan bevatten.

condition Een logische uitdrukking die resulteert in True of False.
statements Een willekeurige groep van een of meer QlikView-scriptopdrachten.
filelist mask

Deze syntaxis produceert een lijst met door komma's gescheiden namen van alle bestanden in de huidige map die overeenkomen met het bestandsnaammasker.

dirlist mask

Deze syntaxis produceert een lijst met door komma's gescheiden namen van alle mappen in de huidige map die overeenkomen met het mapnaammasker.

fieldvaluelist mask Deze syntaxis itereert door de waarden van een veld die al in QlikView zijn geladen.
WaarschuwingDe Qlik Connectoren van internetopslagprovider en andere DataFiles-verbindingen bieden geen ondersteuning voor filtermaskeringen die jokertekens (* en ?) gebruiken.

Voorbeeld 1: Een lijst van bestanden laden

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Voorbeeld 2: Een lijst van bestanden maken op schijf

Via dit voorbeeld wordt een lijst met alle aan QlikView gerelateerde bestanden in een map geladen.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('C:')

Voorbeeld 3: Itereren door de waarden van een veld

Dit voorbeeld itereert door de waarden van geladen waarden van FIELD en genereert een nieuw veld, NEWFIELD. Voor elke waarde van FIELD, worden twee NEWFIELD-records gemaakt.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

De resulterende tabel ziet er als volgt uit:

Example 3
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

Meer informatie

 

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!

Neem deel aan het Analytics Modernization Program

Remove banner from view

Moderniseer zonder uw waardevolle QlikView-apps op het spel te zetten met het Analytics Modernization Program. Klik hier voor meer informatie of om contact op te nemen: ampquestions@qlik.com